from dataclasses import dataclass, field
from typing import List, Optional

@dataclass
class VisualizationConfig:
    # 是否启用可视化
    enable: bool = True

    # 跟踪的指标
    metrics: List[str] = field(default_factory=lambda: ["loss", "accuracy"])

    # 是否绘制 ASCII 终端图
    show_terminal_plot: bool = True

    # ASCII 图高度（行数）
    terminal_height: int = 12

    # 横向固定宽度显示
    terminal_width: int = 50

    # ASCII 图点字符
    terminal_char: str = "●"

    # 是否保存 matplotlib 图像
    save_plots: bool = True

    # 保存路径
    save_dir: str = "./checkpoints/plots"

    # matplotlib 图像大小
    figsize: tuple = (8, 4)

    # 是否保存每个 epoch 的图像
    save_each_epoch: bool = False

    # 是否使用 matplotlib 样式
    style: str = "default"

    # 是否清屏刷新
    clear_terminal: bool = True
